package com.zygh.lz.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 大队档案统计
 *
 * @author wxh
 */
@Mapper
public interface BrigadeRecordMapper {
    /**
     * 获取总巡逻时长
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 总巡逻时长
     */
    Integer getTotalPatrolDuration(@Param("sectionId") Integer sectionId,
                                   @Param("startTime") String startTime,
                                   @Param("endTime") String endTime);

    /**
     * 获取总空岗数量
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 总空岗数量
     */
    Integer getTotalVacantPost(@Param("sectionId") Integer sectionId,
                               @Param("startTime") String startTime,
                               @Param("endTime") String endTime);

    /**
     * 获取签到统计
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 签到统计
     */
    List<Map<String, Object>> getSignStatistics(@Param("sectionId") Integer sectionId,
                                                @Param("startTime") String startTime,
                                                @Param("endTime") String endTime);

      List<Map<String, Object>> getSignWeek(@Param("sectionId") Integer sectionId,
                                                @Param("startTime") String startTime,
                                                @Param("endTime") String endTime);



    /**
     * 获取签到统计-按小时
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 签到统计
     */
    List<Map<String, Object>> getSignStatisticsByHour(@Param("sectionId") Integer sectionId,
                                                      @Param("startTime") String startTime,
                                                      @Param("endTime") String endTime);

    /**
     * 获取大队排名-支队
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 大队排名
     */
    List<Map<String, Object>> getBrigadeRankingOfMilitiaDetachment(@Param("sectionId") Integer sectionId,
                                                                   @Param("startTime") String startTime,
                                                                   @Param("endTime") String endTime);

    /**
     * 获取大队排名-大队
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 大队排名
     */
    List<Map<String, Object>> getBrigadeRankingOfBrigade(@Param("sectionId") Integer sectionId,
                                                         @Param("startTime") String startTime,
                                                         @Param("endTime") String endTime);

    /**
     * 获取总巡查里程与签到趋势
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 总巡查里程与签到趋势
     */
    List<Map<String, Object>> getMileageAndSignTrend(@Param("sectionId") Integer sectionId,
                                                     @Param("startTime") String startTime,
                                                     @Param("endTime") String endTime);

    /**
     * 获取各大队活跃度
     *
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 活跃度
     */
    List<Map<String, String>> getActivityOfDSection(@Param("startTime") String startTime,
                                                    @Param("endTime") String endTime);



    /**
     * 获取大队下各中队活跃度
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 活跃度
     */
    List<Map<String, String>> getActivityOfZSection(@Param("sectionId") Integer sectionId,
                                                    @Param("startTime") String startTime,
                                                    @Param("endTime") String endTime);


    /**
     * 获取某个大队活跃度
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 活跃度
     */
    List<Map<String, Object>> getActivityOfDadui(@Param("sectionId") Integer sectionId,
                                                    @Param("startTime") String startTime,
                                                    @Param("endTime") String endTime);



    /**
     * 获取签到数量
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 签到数量
     */
    Integer getSignedByTime(@Param("sectionId") Integer sectionId,
                            @Param("startTime") String startTime,
                            @Param("endTime") String endTime,
                            @Param("type") String type);

    /**
     * 获取巡逻里程
     *
     * @param sectionId 部门id
     * @param startTime 统计开始时间
     * @param endTime   统计结束时间
     * @return 巡逻里程
     */
    Integer getPatrolDistance(@Param("sectionId") Integer sectionId,
                              @Param("startTime") String startTime,
                              @Param("endTime") String endTime);
}
